home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / math / ucalc30c.zip / UCALC.DOC < prev    next >
Text File  |  1996-04-17  |  65KB  |  1,661 lines

  1.     =======================================================================
  2.     
  3.                             ULTIMATE CALCULATOR 3.0c
  4.                    Copyright (C) 1992-1996 by Daniel Corbier
  5.                              All Rights Reserved.
  6.     
  7.     =======================================================================
  8.     
  9.     
  10.     CONTENTS
  11.     --------
  12.     
  13.     1.  Introduction
  14.     2.  UCALC Features
  15.     3.  Getting Started
  16.         3.1 Installation
  17.         3.2 Single Calculations at the DOS Prompt
  18.         3.3 Interactive Calculations
  19.         3.4 Loading UCALC as a TSR
  20.             3.4.1 Memory
  21.             3.4.2 Swap file
  22.             3.4.3 Hot Key
  23.             3.4.4 Extra Memory
  24.             3.4.5 Text Buffer
  25.             3.4.6 Resizing and Moving the Window
  26.     4.  UCALC Prompt
  27.     5.  Table of Symbols
  28.     6.  Order of Precedence
  29.     7.  Flexible Syntax
  30.     8.  GRAPHING
  31.         8.1 How to Plot
  32.             8.1.1 Cartesian
  33.             8.1.2 Parametric
  34.             8.1.3 Polar
  35.             8.1.4 Plotting data from another file
  36.             8.1.5 Line Segment
  37.             8.1.6 Rectangle
  38.             8.1.7 Filling an Area
  39.         8.2 Graph Menu
  40.             8.2.1 [F2] Reset
  41.             8.2.2 [F3] Fill
  42.             8.2.3 [F4] Color
  43.             8.2.4 [F5] Grid/Axis
  44.             8.2.5 [F6] Dot/Connect
  45.             8.2.6 [F7] Trace
  46.             8.2.7 [F8] Mono
  47.             8.2.8 [F9] Zoom In
  48.             8.2.9 [F10] Zoom Out
  49.         8.3 Special Graphing Commands
  50.             8.3.1 AUTOCLR (automatic coloring)
  51.             8.3.2 AXIS (sets axis line color)
  52.             8.3.3 CONNECT (toggle for dot/connect)
  53.             8.3.4 GCOLOR (background color in graphic mode)
  54.             8.3.5 GRID (sets grid color & pattern)
  55.             8.3.6 MODE (selects graphic card)
  56.             8.3.7 MONO (turns colors off)
  57.             8.3.8 PLOTF (sends the graph coordinates to a file)
  58.             8.3.9 PPLOT (edits previously plotted equations)
  59.             8.3.10 PREC (sets graph precision)
  60.             8.3.11 WINDOW (sets screen coordinate system)
  61.             8.3.12 ZOOM (changes zoom factor)
  62.         8.4 Moving the Crosshair
  63.         8.5 Adding Text to the Screen
  64.         8.6 Printing a Graphic Screen
  65.     9.  Summation
  66.     10. Numerical Integration
  67.     11. Solving Equations
  68.     12. Numerical Notations
  69.     13. Implicit Multiplications
  70.     14. Assigning Variables
  71.     15. Assigning Functions
  72.     16. Miscellaneous Commands
  73.         16.1 LOAD
  74.         16.2 WRITE
  75.         16.3 SHELL
  76.         16.4 COLOR
  77.         16.5 REDIRECT
  78.     17. UCALC.DEF
  79.     18. Technical Notes
  80.     19. Registration
  81.     20. Shareware Author & User Case Study
  82.     21. My Address
  83.     22. Distribution
  84.     23. Acknowledgments
  85.     
  86.     
  87.     1.  Introduction
  88.         ============
  89.     
  90.     UCALC is a graphing scientific calculator which can optionally be
  91.     loaded as a TSR taking less than 6K of main memory.  It can be used for
  92.     simple arithmetic, or complex scientific calculations.  It supports
  93.     many built-in functions, operators, numerical notations, and modes.  It
  94.     also allows for user-defined functions and variables.  It can evaluate
  95.     expressions, solve equations, plot equations, perform numerical
  96.     integrations, do summations, and more.  Expressions such as the
  97.     following are accepted:
  98.  
  99.         63 - 5 + 4.75
  100.     
  101.         (5.9-abs(2.8/5-3))^2 + sin( 3-(pi+3/4)*myfunction(a,b) )
  102.     
  103.         solve 3*x^2+2*x-5 = 27 
  104.     
  105.         #b101010 and (#b10101 or #h1CC) * 2^5
  106.     
  107.         plot sin(x)*x^2/10
  108.     
  109.     
  110.     2.  UCALC Features
  111.         ==============
  112.  
  113.     - MATH EXPRESSION EVALUATOR for simple or complex operations
  114.     - Arithmetic, bitwise, and relational operators
  115.     - Decimal, hexadecimal, binary and octal notations
  116.     - Trig, hyperbolic, and many other common sci. functions
  117.     - Supports user defined variables & functions with multiple arguments
  118.     - Radian, degree, and gradient modes for trig functions
  119.     - High precision: 18 significant digits.  +/-3.4E-4932 to +/-1.2E+4932
  120.     - Equation solver, summation & sumtable, numerical integration
  121.  
  122.     - TSR OPTION (UCALC /TSR)
  123.     - Less than 6K main memory using EMS or file
  124.     - Main memory, EMS, or file, can be chosen
  125.     - TSR window can be resized or moved
  126.     - Hot key can be chosen
  127.     - PASTE command
  128.     - TSR can be unloaded from memory
  129.  
  130.     - FAST EQUATION PLOTTER
  131.     - Interactive menu with ZOOM, TRACE, COLOR, FILL, GRID, etc...
  132.     - Support for up to 16 supper-imposed multi-color user graphs
  133.     - Cartesian (rectangular), polar, and parametric user graphs
  134.     - Data from another file can be plotted
  135.     - Adjustable precision & screen coordinate system
  136.     - Text can be typed anywhere on the graph screen
  137.     - VGA, EGA, MCGA, CGA, and Hercules modes (auto detection or select)
  138.     - Coordinates can be saved to a file
  139.     - Mouse support
  140.  
  141.     - Online help with F1
  142.     - Line editor with expression recall
  143.     - Expressions can be entered at the DOS command line
  144.     - DOS redirection option
  145.     - Adjustable FIX & DIG notation
  146.     - LOAD, WRITE, PRINT, SHELL, COLOR, and more
  147.     
  148.     
  149.     3.  Getting Started
  150.         ===============
  151.     
  152.         3.1 Installation
  153.             ------------
  154.     
  155.     There is no elaborate procedure for installing UCALC.  Simply type
  156.     UCALC to run the program.  To customize UCALC, simply create or modify
  157.     the UCALC.DEF and UCALC.TSR text files (explained further down). 
  158.     UCALC.EXE, UCALC.DEF, and UCALC.TSR can be placed in a directory
  159.     defined in the PATH statement of the AUTOEXEC.BAT file (such as the DOS
  160.     or UTILS directory), for easier access.  
  161.     
  162.     
  163.         3.2 Single Calculations at the DOS Prompt
  164.             -------------------------------------
  165.     
  166.     There are several ways of running the Ultimate Calculator.  The first
  167.     way is to enter an expression at the DOS command line as follows:
  168.     
  169.     UCALC 5+4*8/2 [enter]
  170.     
  171.     At the DOS command line, UCALC will accept the following options:
  172.     
  173.     /?        Help
  174.     /TSR      Loads UCALC as a memory resident program
  175.     /NODEF    Ignores UCALC.DEF
  176.     
  177.     UCALC also supports redirection from the DOS command line.
  178.     
  179.     If an expression is present at the command line, it is evaluated, and
  180.     control returns to DOS.  If redirection is performed, control also
  181.     returns to DOS when finished.  Otherwise, it goes to the 'ucalc> '
  182.     prompt, where you may enter many expressions and quit with [Esc].  If a
  183.     symbol in the expression is in conflict with DOS, then enclose the
  184.     expression in quotes.
  185.     
  186.     Examples:
  187.     ---------
  188.     
  189.     UCALC 3+6-2
  190.     
  191.     UCALC "5^4 | 5*8"
  192.     
  193.     UCALC /NODEF 3+7
  194.     
  195.     UCALC < abc.cal > output.uc
  196.     
  197.     
  198.         3.3 Interactive Calculations
  199.             ------------------------
  200.     
  201.     UCALC also provides a line editor for performing multiple calculations.
  202.     This environment allows you to assign values to variables, and define
  203.     functions as you go along.  To run UCALC in that mode, simply type
  204.     "UCALC" at the DOS command line without any expression as follows:
  205.     
  206.     UCALC [enter]
  207.     
  208.     When you are in this mode, you can press [F1] any time for help, and
  209.     [Esc] to quit the program.  See EXAMPLES.DOC to get more ideas on how
  210.     to use UCALC.  For a graphing demo, enter   UCALC < PLOTDEMO   from the
  211.     DOS prompt.
  212.     
  213.  
  214.         3.4 Loading UCALC as a TSR
  215.             ----------------------
  216.     
  217.     A third and more convenient way of running UCALC is to first load it as
  218.     a TSR file.  From then on, UCALC can be called instantly at any time
  219.     with a hot key, without the user having to go to the DOS prompt.
  220.     
  221.     To load UCALC as a TSR program, simply type this at the DOS prompt:
  222.     
  223.     UCALC /TSR
  224.     
  225.     Or, include that line in your AUTOEXEC.BAT file.  Once UCALC is memory
  226.     resident, it can be invoked at any time with a hot key such as "ALT U". 
  227.     Before running UCALC as a TSR for the first time, check the parameters
  228.     in UCALC.TSR to make sure they match your needs.  
  229.     
  230.     The presence of a UCALC.TSR file is optional.  In the absence of this
  231.     file, the parameters are set as follows:
  232.     
  233.     MEMORY=E/F
  234.     SWAPFILE=C:\UCALC$.$$$
  235.     HOTKEY=ALT U
  236.     EXTRAMEM=11000
  237.     TEXTBUFF=15
  238.     
  239.     The following parameters can be set in UCALC.TSR:
  240.     
  241.     
  242.             3.4.1 Memory
  243.                   ------
  244.     
  245.     The following line sets how UCALC is loaded into memory as a TSR:
  246.     
  247.     MEMORY=<option>
  248.     
  249.     where <option> is one of the following:
  250.     
  251.            EMS
  252.     If your computer has EMS memory, then this is the best option.  It
  253.     takes less then 6K of main memory, and pops up quickly when invoked.
  254.     
  255.            MAIN
  256.     If this option is chosen, UCALC will pop up quickly when invoked, but
  257.     it will also take a lot of bytes from main memory.
  258.     
  259.            FILE
  260.     This option takes up less then 6K of main memory, but instead of
  261.     swapping to EMS or using up main memory, it swaps to a file.  With this
  262.     option, it generally takes more time for UCALC to pop up when invoked. 
  263.     When using this option, make sure that there is at least 350Kb free on
  264.     the hard drive.  Do not use this option on a floppy drive, as it would
  265.     be painfully slow, and it would crash if the disk were removed when
  266.     popping up.  If the FILE option is chosen, a file must be defined with
  267.     "SWAPFILE=".
  268.     
  269.            E/F
  270.     If the "MEMORY=" line is omitted, or if E/F is entered, then UCALC will
  271.     use EMS if detected or it will swap to a file if there's no EMS.
  272.     
  273.  
  274.             3.4.2 Swap file
  275.                   ---------
  276.     
  277.     If a line with "MEMORY=FILE" is used, then a swap file must be defined
  278.     as follows:
  279.     
  280.     SWAPFILE=<filename>
  281.     
  282.     The file name must include the drive letter, and path; for instance
  283.     "SWAPFILE=C:\UCALC$.$$$".  Choose a name that is unique, and unlikely
  284.     to be used for something else.  To protect the user from accidently
  285.     erasing this file, it is marked with a hidden attribute.  The swapfile
  286.     parameter is ignored if UCALC loads into EMS or main memory.
  287.     
  288.     
  289.             3.4.3 Hot Key
  290.                   -------
  291.     
  292.     By default UCALC is popped up by pressing <ALT U>.  This can however be
  293.     changed by placing a line in UCALC.TSR with the following format:
  294.     
  295.     HOTKEY=<CTRL and/or ALT and/or SHIFT> <character>
  296.     
  297.     The following lines are examples of acceptable hot keys:
  298.     
  299.     HOTKEY=ALT 1
  300.     HOTKEY=CTRL V
  301.     HOTKEY=CTRL ALT Z
  302.     
  303.     
  304.             3.4.4 Extra Memory
  305.                   ------------
  306.     
  307.     When UCALC is loaded from DOS without the TSR option, memory is
  308.     allocated dynamically.  This means that as new variables and functions
  309.     are being defined, etc... additional main memory is being taken. 
  310.     However, when UCALC is loaded as a TSR, a fixed maximum amount of
  311.     memory is allocated (which is generally much less than what is
  312.     available when running it as a non-TSR).  This amount can be raised or
  313.     lowered with the following line:
  314.     
  315.     EXTRAMEM=<number>
  316.     
  317.     <number> should be greater than 8000.  Anything less may cause UCALC to
  318.     run out of memory even for simple calculations.
  319.     
  320.     
  321.             3.4.5 Text Buffer
  322.                   -----------
  323.  
  324.     This determines how many lines of text can be recalled.  When run from
  325.     DOS, 100 lines can be recalled.  To conserve memory in TSR mode, the
  326.     number of lines that can be recalled should be reduced.  This is done
  327.     by adding this line.
  328.  
  329.     TEXTBUFF=<number>
  330.  
  331.     Where <number> is between 2 and 100.
  332.  
  333.             3.4.6 Resizing and Moving the Window
  334.                   ------------------------------
  335.  
  336.     <Ctrl> Up, Down, Left, or Right arrow is used for moving the window.
  337.     <Alt> Up, Down, Left, or Right changes the window size.
  338.  
  339.     NOTE:  When resizing the window, do not use the arrows on the numeric
  340.            keypad, since <Alt> <keypad number> is used for returning
  341.            ASCII characters.  Use the other arrows instead.
  342.  
  343.  
  344.     4.  UCALC Prompt
  345.         ============
  346.  
  347.     At the 'ucalc> ' prompt, expressions to be evaluated can be entered,
  348.     functions and variables can be defined, and the following commands and
  349.     function keys can be used:
  350.     
  351.     [F1] Help                   (same as HELP or ?)
  352.     [F2] Lists variables        (same as LIST)
  353.     [F3] Displays UCALC.DEF     (same as LIST DEF)
  354.     [F4] DOS shell              (same as SHELL)
  355.     [F5] Lists user functions   (same as LISTF)
  356.     [Esc] Quit                  (same as QUIT, see also EXIT)
  357.     
  358.     AUTOCLR [nn]             Sets the number of colors used in graphing.
  359.     AXIS color               Changes the color of the graphic axis lines.
  360.     CLOSE                    Closes the file opened with the WRITE command.
  361.     CLS                      Clears the screen.
  362.     COLOR [foregr] [,backg]  Changes the text screen colors.
  363.     CONNECT {ON|OFF}         Toggles connected/dotted graphs.
  364.     DIG nn                   Changes the total number of digits displayed.
  365.     EXIT                     Exits to DOS (or pops down if in TSR mode).
  366.     EXIT TSR                 Exits, and de-activates UCALC from memory.
  367.     FIX nn                   Changes number of decimal digits displayed.
  368.     GCOLOR color             Changes graph screen background color.
  369.     GRID color [, pattern]   Sets the grid pattern in the graph mode.
  370.     HELP                     Gives online help (same as F1 or ?).
  371.     INTEG fx,a..b [,n]       Numerical integration.
  372.     LIST                     Lists user defined variables (same as F2).
  373.     LISTF                    Lists user defined functions (same as F5).
  374.     LIST DEF                 Displays the contents of UCALC.DEF (F3).
  375.     LOAD"filename"           Loads a file.
  376.     MODE {DEG|RAD|GRA}       Changes mode to degree, radian, or gradient.
  377.     MODE {HGC|CGA|EGA|VGA|MCGA}   Sets the graphic mode for plotting.
  378.     MODE HBO                 Toggles the hex, binary, octal answer display.
  379.     MONO                     Turns graphic mode colors off.
  380.     PASTE                    Places result on screen after popping down.
  381.     PLOT [equation]          Plots user equations.
  382.     PPLOT                    Edits previously plotted equations.
  383.     PREC nn                  Changes the precision used in graphing.
  384.     PRINT [ON|OFF]           Prints the current session as you work.
  385.     PROMPT"yourprompt"       Changes or removes the 'ucalc> ' prompt.
  386.     PROMPTA"yourprompt"      Changes or removes the 'Answer: ' prompt.
  387.     QUIT                     Exits (same as [Esc]).
  388.     REDIRECT [ON|OFF]        Enables or disables redirection.
  389.     SHELL                    Shells to DOS (same as F4).
  390.     SHELL"command"           Executes a DOS command.
  391.     SOLVE fx [=gx] [,a..b]   Solves an equation.
  392.     SUM fx,a..b [,dx]        Summation of function fx ranging from a to b.
  393.     SUMTABLE fx,a..b [,dx]   Summation which displays intermediate results.
  394.     WINDOW(x1,x2,y1,y2)      Changes the screen coordinate system.
  395.     WRITE"filename"          Records your session to a file.
  396.     ZOOM nn                  Changes the zoom factor.
  397.     
  398.     The variable 'last' contains the value of the previous computation.
  399.     Variable 'x' is the parameter which should be used with SUM, SUMTABLE,
  400.     and SOLVE.  Selections which appear inside brackets [] are optional.
  401.     
  402.     At the 'ucalc> ' prompt, the up (or down) arrow keys can be used to
  403.     recall previous expressions.  Several characters may be keyed in before
  404.     pressing the up arrow in order to recall an expression starting with
  405.     those characters.
  406.     
  407.     
  408.     5.  Table of Symbols
  409.         ================
  410.     
  411.     Symbol   Equivalent   Description                       Example
  412.     ------   ----------   -----------                       -------
  413.     ( )                   Prioritizes an expression         5*(1+1) = 10
  414.     
  415.     !                     Factorial                              5! = 120
  416.     ^        **           Raised to the power of            4  ^  5 = 1024
  417.     *                     Multiply by                       3  *  6 = 18
  418.     /                     Divide by                         9  /  2 = 4.5
  419.     %        MOD          Modulo                            7  %  4 = 3
  420.     +                     Add                               1  +  1 = 2
  421.     -                     Subtract                          9  -  5 = 4
  422.     
  423.     >                     Greater than                      9  >  2 = 1
  424.     <                     Less than                         7  <  4 = 0
  425.     =        ==           Equal test                        5  =  4 = 0
  426.     >=       =>           Greater or equal                  3  >= 3 = 1
  427.     <=       =<           Less or equal                   $3E  <= 9 = 0
  428.     <>                    Not Equal                   #b10101 <> 20 = 1
  429.     
  430.     NOT                   Bitwise 'not'                     not(15) = -16
  431.     AND       &           Bitwise 'and'              #b101 and #h1E = 4
  432.     OR        |           Bitwise 'or'                     13 or 6  = 15
  433.     XOR                   Bitwise 'exclusive or'           9 xor 3  = 10
  434.     EQV                   Bitwise 'equivalence'            6 eqv 9  = -16
  435.     IMP                   Bitwise 'implication'            1 imp 5  = -1
  436.     
  437.     SIN                   Sine                              sin(pi) = 0
  438.     COS                   Cosine                            cos(pi) = -1
  439.     TAN                   Tangent                           tan(pi) = 0
  440.     ASIN                  Arcsine                           asin(1) = 1.570
  441.     ACOS                  Arccosine                        acos(-1) = 3.141
  442.     ATAN      ATN         Arctangent                        atan(0) = 0
  443.     
  444.     SINH                  Hyperbolic sine                   sinh(3) = 10.01
  445.     COSH                  Hyperbolic cosine                 cosh(2) = 3.762
  446.     TANH                  Hyperbolic tangent                tanh(1) = 0.761
  447.     COTH                  Hyperbolic cotangent              coth(1) = 1.318
  448.     SECH                  Hyperbolic secant                 sech(0) = 1
  449.     CSCH                  Hyperbolic cosecant               csch(1) = 0.850
  450.     ASINH                 Hyperbolic arcsine               asinh(2) = 1.443
  451.     ACOSH                 Hyperbolic arccosine             acosh(9) = 2.887
  452.     ATANH                 Hyperbolic arctangent           atanh(.5) = 1.098
  453.     ACOTH                 Hyperbolic arccotangent          acoth(7) = 0.143
  454.     ASECH                 Hyperbolic arcsecant            asech(.3) = 1.873
  455.     ACSCH                 Hyperbolic arccosecant           acsch(2) = 0.481
  456.     
  457.     ABS                   Absolute value                    abs(-8) = 8
  458.     EXP                   e to the power of                  exp(3) = 20.08
  459.     RND                   Random number                      rnd(1) = .9686
  460.     INT                   Truncate to an integer           int(6.8) = 6
  461.     CEIL                  Round upward                    ceil(6.8) = 7
  462.     EXP2                  2 to the xth power                exp2(3) = 8
  463.     EXP10                 10 to the xth power              exp10(3) = 1000
  464.     FACT                  Factorial                         fact(5) = 120
  465.     LOG2                  Log base 2                        log2(8) = 3
  466.     LOG10                 Log base 10                    log10(100) = 2
  467.     LOG        LN         Natural log                       log(16) = 2.77
  468.     SGN        SIGN       Sign of expression                sgn(-9) = -1
  469.     SQR        SQRT       Square root                       sqr(64) = 8
  470.     
  471.     
  472.     6.  Order of Precedence
  473.         ===================
  474.     
  475.     Here is the precedence list from highest to lowest priority:
  476.     
  477.     Anything inside parenthesis is performed first  ( )
  478.     Factorial                                       !
  479.     Exponentiation                                  ^
  480.     Multiplication, division                        *, /
  481.     Modulo                                          MOD
  482.     Addition, subtraction                           +, -
  483.     Relational operators                            <, >, >=, <=, =, <>
  484.     AND
  485.     OR, XOR (exclusive or)
  486.     EQV (equivalence)
  487.     IMP (implication)
  488.     
  489.     When consecutive operators have the same priority, UCALC evaluates from
  490.     left to right.  This means that an expression such as "a-b-c" is
  491.     evaluated as "(a-b)-c".
  492.     
  493.     
  494.     7.  Flexible Syntax
  495.         ===============
  496.     
  497.     UCALC is designed to work in a simple and familiar way, and it
  498.     accommodates itself to several styles, so that users may start being
  499.     productive the very first time the program is executed.  Refer to 
  500.     '5.  Table of Symbols' for the alternative notations of several
  501.     operators and functions.  The entries below which are grouped together
  502.     are equivalent:
  503.     
  504.     ucalc> LOAD"myfile"   ; The interchangeability of the quote and
  505.     ucalc> LOAD myfile    ; parenthesis, or lack of either is also possible
  506.     ucalc> LOAD(myfile)   ; for MODE, FIX, DIG, AUTOCLR, and PREC.
  507.     
  508.     ucalc> SOLVE(x^2=100) ; The outer parenthesis can also be omitted in
  509.     ucalc> SOLVE x^2=100  ; WINDOW, INTEG, SUM, and SUMTABLE.
  510.     
  511.     ucalc> SUMTABLE(x, 1..10)       ; Any entry which uses '..' can
  512.     ucalc> SUMTABLE(x, 1 to 10)     ; also use ' TO ' instead.
  513.     ucalc> SUMTABLE x, 1 to 10
  514.     
  515.     ucalc> PLOT y=x^2               ; 'y=' can be omitted for these types
  516.     ucalc> PLOT x^2                 ; of graphic equations.
  517.     
  518.     ucalc> PLOT x=t, y=t^2, -5..5   ; 'x=' and 'y=' can be omitted
  519.     ucalc> PLOT t, t^2, -5..5
  520.     ucalc> PLOT t, t^2, -5 to 5
  521.     
  522.     
  523.     8.  GRAPHING
  524.         ========
  525.     
  526.     To see a demonstration of some of UCALC's graphing capabilities, enter
  527.     the following at the DOS prompt:
  528.     
  529.     UCALC < PLOTDEMO
  530.     
  531.     Make sure that the PLOTDEMO, GRAPH1.DAT, and GRAPH2.DAT files are in
  532.     the current directory.
  533.     
  534.     
  535.         8.1 How to Plot
  536.             -----------
  537.     
  538.     Syntax:      PLOT equation
  539.              or  PLOT
  540.     
  541.     This plots user equations.  If an equation is entered on the same line
  542.     as the PLOT command, then it will be plotted.  If PLOT is entered alone
  543.     at the 'ucalc> ' command line, then the user will be asked to enter
  544.     several equations.  Press [return] twice when finished entering
  545.     equations.  Up to 16 user equations can be displayed simultaneously.
  546.     
  547.     NOTE:  Unlike expressions which are evaluated at the 'ucalc> ' prompt,
  548.            equations that are going to be plotted aren't checked for
  549.            certain errors.  Division by 0, square root of negative numbers,
  550.            etc... do not stop the graph from being plotted.
  551.     
  552.     Examples:
  553.     ---------
  554.     
  555.     ucalc> PLOT sin(x)
  556.     
  557.     ucalc> PLOT r=t/5
  558.     
  559.     ucalc> PLOT 2x+7
  560.     
  561.     ucalc> PLOT          ; PLOT by itself prompts for multiple equations
  562.     Equation 1: x^2           ; Plots a parabola
  563.     Equation 2: fill(1,3)     ; Fills an area bounded by the equation above
  564.     Equation 3: line(2,3,-1,5); Line segment from (2,3) to (-1,5)
  565.     Equation 4: r=t^2/pi      ; Polar equation
  566.     Equation 5: cos(t), sin(t); Parametric equation
  567.     Equation 6:
  568.     
  569.     After hitting [enter] on the blank line, it will plot the 5 entries
  570.     above.  Any combination of equations can be entered.  The plotting of
  571.     an equation can be aborted at any time, by hitting any key.
  572.     
  573.     The following entries can be plotted:
  574.     
  575.     
  576.             8.1.1 Cartesian
  577.                   ---------
  578.     
  579.     Syntax:  y = f(x)   [,start..finish]           (or simply f(x))
  580.     
  581.     This plots a curve in the rectangular coordinate system (Cartesian). 
  582.     As a shortcut, the 'y=' can be omitted.  For instance, 'y=x^2' can
  583.     simply be entered as 'x^2'.  The variable parameter is 'x'.  Equations
  584.     can optionally be plotted within an interval defined by start & finish.
  585.     
  586.     Examples:
  587.     ---------
  588.     
  589.     PLOT y=tan(x)
  590.     
  591.     PLOT sin(x)-3
  592.     
  593.     PLOT 3cos(x), -pi to 2pi
  594.     
  595.     PLOT 3x^2-5x+1, 0..2        ; ('0..2' can also be written as '0 to 2')
  596.     
  597.     
  598.             8.1.2 Parametric
  599.                   ----------
  600.     
  601.     Syntax:  x = f(t), y = g(t) [,a..b]     (or simply f(t), g(t) [,a..b])
  602.     
  603.     Certain types of curves in the x-y plane cannot be expressed in the
  604.     form 'y=f(x)'.  Parametric equations are more flexible, and can even be
  605.     used as a superset of equations in the 'y=f(x)' form.  'y=f(x)' can be
  606.     expressed as 'x=t, y=f(t)'.   Equations in the form 'x=f(y)' can also
  607.     be entered as a parametric equation, in the form 'x=f(t), y=t'.  If the
  608.     optional interval is omitted, UCALC uses 0..2pi.
  609.     
  610.     Examples:
  611.     ---------
  612.     
  613.     ucalc> PLOT x= cos(t), y= t-2
  614.     
  615.     ucalc> PLOT cos(t), t-2     ; This is the same as above
  616.     
  617.     ucalc> PLOT cos(t)-1, sin(t)+t-5, 0..3pi
  618.     
  619.     ucalc> PLOT 2 cos(t), t, -5..5
  620.     
  621.     NOTE:  Remember that the variable parameter for parametric equations is
  622.            't' and not 'x'.
  623.     
  624.     
  625.             8.1.3 Polar
  626.                   -----
  627.     
  628.     Syntax: r = f(t) [,a..b]
  629.     
  630.     'r=' is what makes UCALC recognize that it's a polar equation, so 'r='
  631.     is not optional.  If the optional a..b interval is not entered, then
  632.     the default 0..2pi will be used.  The variable parameter for polar
  633.     equations is 't'.
  634.     
  635.     Examples:
  636.     ---------
  637.     
  638.     ucalc> PLOT r=t/pi, 0..10pi
  639.     
  640.     ucalc> PLOT r=sin(t)
  641.     
  642.     ucalc> PLOT r=t*sin(t)
  643.     
  644.     
  645.             8.1.4 Plotting data from another file
  646.                   -------------------------------
  647.     
  648.     Syntax:  "mygraph.dat"
  649.     
  650.     Graphs from a text file can be plotted by entering the name of the file
  651.     inside quotes.  The file must consist of a list of x and y coordinates
  652.     which are separated by spaces, or a comma.  The file may look something
  653.     like this:
  654.     
  655.     -10            .5440211108893698
  656.     -9            -.4121184852417566
  657.     -8            -.9893582466233818
  658.     -7            -.6569865987187891
  659.     etc...
  660.     
  661.     Example:
  662.     --------
  663.     
  664.     ucalc> PLOT"mygraph.dat"
  665.     
  666.     
  667.             8.1.5 Line Segment
  668.                   ------------
  669.     
  670.     Syntax:  LINE(x1,y1,x2,y2)
  671.     
  672.     This produces a line segment with endpoints (x1,y1) and (x2,y2).
  673.     
  674.     Example:
  675.     --------
  676.     
  677.     ucalc> PLOT line(3,2,5,7)
  678.     
  679.     
  680.             8.1.6 Rectangle
  681.                   ---------
  682.     
  683.     Syntax:  RECT(x1,y1,x2,y2)
  684.     
  685.     This produces a rectangle which has opposing corners (x1,y1) and
  686.     (x2,y2).
  687.     
  688.     Example:
  689.     --------
  690.     
  691.     ucalc> PLOT rect(0,0,5,6)
  692.     
  693.     
  694.             8.1.7 Filling an Area
  695.                   ---------------
  696.     
  697.     Syntax:  FILL(x,y)
  698.     
  699.     This fills a bounded area on the screen in which (x,y) is located.  In
  700.     monochrome mode, it fills the area around (x,y) enclosed within any
  701.     other curve, or the edge of the screen.  If the graphs are in multiple
  702.     colors, then the FILL statement only uses the color of the preceding
  703.     graph as a boundary.  See the example in '8.1 Plotting'.
  704.     
  705.     
  706.         8.2 Graph menu
  707.             ----------
  708.     
  709.     When graphing is completed, a menu with function keys appears at the
  710.     top.  Due to limited space, the descriptions on screen are very brief.
  711.     Here is a more detailed explanation of each option.
  712.     
  713.     
  714.             8.2.1 [F2] Reset
  715.                   ----------
  716.     
  717.     This clears the screen, sets graphs to their original sizes, and then
  718.     replots them.
  719.     
  720.     
  721.             8.2.2 [F3] Fill
  722.                   ---------
  723.     
  724.     Move the cursor inside an enclosed area of the screen, and press F3. 
  725.     This will fill the enclosed area.  This works best in the MONO mode
  726.     (press F8 for MONO).
  727.     
  728.     
  729.             8.2.3 [F4] Color
  730.                   ----------
  731.     
  732.     1. When the crosshair cursor is in the free-floating mode (default) the 
  733.        background color changes.
  734.     
  735.     2. If a graph is being traced, F4 will change the color of that graph.
  736.     
  737.     
  738.             8.2.4 [F5] Grid/Axis
  739.                   --------------
  740.     
  741.     This sets or removes the grid and axis lines.  Press it several times
  742.     to cycle through the options.
  743.     
  744.     
  745.             8.2.5 [F6] Dot/Connect
  746.                   ----------------
  747.     
  748.     This toggle plots equations as connected curves, or with disconnected
  749.     dots.  When the precision is set high enough, dots are close together
  750.     and may seem connected.
  751.     
  752.     
  753.             8.2.6 [F7] Trace
  754.                   ----------
  755.     
  756.     This allows users to trace through polar, parametric, and y=f(x)
  757.     equations.  Use the right and left arrow keys to trace through a graph. 
  758.     Pressing F7 again will put the crosshair back in the free-floating
  759.     mode.  Use the up or down arrow keys to choose the previous or next
  760.     equation.
  761.     
  762.     For a "y=f(x)" type of equation, tracing starts on the x coordinate of
  763.     the current crosshair location.  For polar & parametric equations,
  764.     tracing starts at the origin, and additional coordinates are displayed.
  765.     
  766.     
  767.             8.2.7 [F8] Mono
  768.                   ---------
  769.     
  770.     Due to lack of space, this option is not displayed on the menu.  This
  771.     sets all the graphs to the same color, allowing the F3 FILL option to
  772.     work more effectively.  Pressing it a second time sets it back to color
  773.     again.
  774.     
  775.     
  776.             8.2.8 [F9] Zoom In
  777.                   ------------
  778.  
  779.     In order to zoom in on an area, place the crosshair in the center of
  780.     the area of interest, and press F9 or the left mouse button.  The zoom
  781.     factor can be changed with the ZOOM command.
  782.  
  783.  
  784.             8.2.9 [F10] Zoom Out
  785.                   --------------
  786.  
  787.     This zooms out.  The right mouse button can also be used.
  788.  
  789.     
  790.         8.3 Special Graphing Commands
  791.             -------------------------
  792.     
  793.             The following commands can be entered at the 'ucalc> ' prompt,
  794.     or placed in the UCALC.DEF file:
  795.     
  796.     
  797.             8.3.1 AUTOCLR (automatic coloring)
  798.                   ----------------------------
  799.     
  800.     Syntax:  AUTOCLR [nn]
  801.     
  802.     This command causes each consecutive graph to be displayed in a
  803.     different color.  The optional 'nn' parameter indicates how many
  804.     different colors can be used.  The default is 15.  If some graphs turn
  805.     out to be invisible, then a smaller number should be chosen for 'nn'. 
  806.     The CGA and MCGA modes in UCALC do not support color.
  807.     
  808.     Examples:
  809.     ---------
  810.     
  811.     ucalc> AUTOCLR          ; Allows 15 different colors (default)
  812.     ucalc> AUTOCLR 3        ; Tells UCALC to use only 3 different colors
  813.     
  814.     
  815.             8.3.2 AXIS (sets axis line color)
  816.                   ---------------------------
  817.     
  818.     Syntax: AXIS color
  819.     
  820.     This sets the axis line color.  Color 0 turns the axis lines off.  It
  821.     can be toggled on or off interactively in the graphic screen with F5.
  822.     
  823.     Examples:
  824.     ---------
  825.     
  826.     ucalc> AXIS 0    ; turns the axis lines off
  827.     ucalc> AXIS 1    ; blue axis lines
  828.     
  829.     
  830.             8.3.3 CONNECT (toggle for dot/connect)
  831.                   --------------------------------
  832.     
  833.     Syntax:  CONNECT {ON | OFF}
  834.     
  835.     When CONNECT is OFF, graphs will be drawn as a series of dots, as
  836.     opposed to a continuously connected curve.  A dot graph is better for
  837.     plotting certain discontinuous graphs, such as "y=INT(x)".  When in the
  838.     graphic screen, F6 will interactively toggle the connect option.
  839.     
  840.     Example:
  841.     --------
  842.     
  843.     ucalc> CONNECT OFF
  844.     
  845.     
  846.             8.3.4 GCOLOR (background color in graphic mode)
  847.                   -----------------------------------------
  848.     
  849.     Syntax:  GCOLOR color
  850.     
  851.     This sets the background color on the graphic screen.  In the VGA mode,
  852.     a number between 0 and 63 is accepted.  The graphic color can also be
  853.     changed interactively by pressing F4 in the graphic screen.
  854.     
  855.     Example:
  856.     --------
  857.     
  858.     ucalc> GCOLOR 10
  859.     
  860.     
  861.             8.3.5 GRID (sets grid color & pattern)
  862.                   --------------------------------
  863.     
  864.     Syntax:  GRID color [,pattern]
  865.     
  866.     This command sets the color and pattern of the grid that will be used
  867.     in the graphic screen.  In order for the grid not to appear, set GRID
  868.     to 0.  The optional "pattern" parameter sets a pattern for the line. 
  869.     The default is #b1000100010001000
  870.                      .   .   .   .   .   .   .   .   .   .
  871.     As illustrated with the dots above, this represents a pattern with each
  872.     1 corresponding to a pixel (the pixel dots are of course much closer
  873.     together in the graphic screen).  A pattern of -1 makes it a continuous
  874.     line.  The grid can be toggled on or off interactively with F5.
  875.     
  876.     Example:
  877.     --------
  878.     
  879.     ucalc> GRID 4                      ; Sets a grid with color 4
  880.     ucalc> GRID 1, #b1010101010101010  ; Sets a dotted grid with every
  881.                                        ; other pixel turned on
  882.     ucalc> GRID 5, -1                  ; -1 makes it a continuous line
  883.     
  884.     
  885.             8.3.6 MODE (selects graphic card)
  886.                   ---------------------------
  887.     
  888.     Syntax:  MODE {CGA | EGA | HGC | VGA | MCGA}
  889.     
  890.     This changes the graphic mode that is used for plotting.  When UCALC
  891.     loads up, it automatically determines the highest resolution supported
  892.     by your computer.  To change it to another screen mode, put a MODE
  893.     statement in UCALC.DEF (or type it at the 'ucalc> ' prompt), with the
  894.     proper selection.
  895.     
  896.     Example:
  897.     --------
  898.     
  899.     ucalc> MODE EGA               ; Sets the monitor to EGA mode
  900.     
  901.  
  902.             8.3.7 MONO (turns colors off)
  903.                   -----------------------
  904.  
  905.     Syntax:  MONO
  906.  
  907.     This turns all colors off in the graphic mode.  Those who do not have a
  908.     color monitor may want to include this command in UCALC.DEF.  This
  909.     command may also be useful for a better printout, or when filling the
  910.     area between graphs.
  911.  
  912.  
  913.             8.3.8 PLOTF (sends the graph coordinates to a file)
  914.                   ---------------------------------------------
  915.  
  916.     Syntax:  PLOTF"filename"
  917.  
  918.     This sends all the coordinates of the next graph to the specified file.
  919.     Follow this command with the PLOT or PPLOT command.
  920.  
  921.  
  922.             8.3.9 PPLOT (edits previously plotted equations)
  923.                   ------------------------------------------
  924.  
  925.     Syntax:  PPLOT
  926.  
  927.     In order to modify a few things in a set of equations that have been
  928.     plotted before, use the PPLOT command at the 'ucalc> ' prompt to avoid
  929.     retyping everything.  Sometimes you may want to simply change a setting
  930.     such as the zoom factor or graph precision, and plot the previous set
  931.     of equations without modification.  In this case, type "PLOT" and press
  932.     [enter] twice.
  933.  
  934.     Examples:
  935.     ---------
  936.  
  937.     ucalc> PPLOT     ; This lets you modify previously graphed equations.
  938.     ucalc> PLOT
  939.     Equation 1:      ; Press [enter] without typing an equation to replot
  940.                        the previous set, if no modifications are desired.
  941.  
  942.  
  943.             8.3.10 Graphing precision (PREC)
  944.                    -------------------------
  945.  
  946.     Syntax:  PREC nn
  947.  
  948.     This changes the precision used in graphing.  'nn' represents the
  949.     number of pixels per unit (x-axis).  The higher 'nn' is, the higher the
  950.     precision will be.  More precision naturally means slower plotting.
  951.     The default precision is 10, and should be fine for many graphs.  If
  952.     stray lines appear in an unbounded graph, or if the graph appears
  953.     jagged, or if the curve doesn't quite reach the starting or ending
  954.     points (such as in polar graphs) then raising the precision will often
  955.     solve the problem.
  956.  
  957.     Example:
  958.     --------
  959.  
  960.     ucalc> PREC 100
  961.  
  962.  
  963.             8.3.11 WINDOW (sets screen coordinate system)
  964.                    --------------------------------------
  965.  
  966.     Syntax:  WINDOW(x1,x2,y1,y2)
  967.  
  968.     This modifies the graphic screen coordinate system.  x1 and x2
  969.     represent the screen end locations of the X axis, and the Y axis goes
  970.     from y1 to y2.  The X and Y axes cross at (0,0).  The default setting
  971.     is WINDOW(-10,10,-7.5,7.5), which means that the origin (0,0) is at the
  972.     center of the screen, with point (-10,-7.5) at the bottom left of the
  973.     screen and (10,7.5) at the top right of the screen.
  974.  
  975.     Examples:
  976.     ---------
  977.  
  978.     ucalc> WINDOW(0,10,0,7.5)
  979.     This sets the origin at the bottom left of the screen.
  980.  
  981.     ucalc> WINDOW(-1,1,-1,1)
  982.     The origin is at the center, and x goes from -1 to 1, and so does y.
  983.  
  984.     ucalc> WINDOW(-10,10,-7,7)
  985.     This creates a better proportional window in the EGA mode.
  986.  
  987.  
  988.             8.3.12 ZOOM (changes zoom factor)
  989.                    --------------------------
  990.  
  991.     Syntax: ZOOM factor
  992.  
  993.     This sets the zoom factor.  The default is 5.  When a graph is on the
  994.     screen, place the cursor on an area that you want to magnify.  Press F9
  995.     to zoom in, or F10 to zoom out.
  996.  
  997.     Examples:
  998.     ---------
  999.  
  1000.     ucalc> ZOOM 10   ; When you later press the Zoom In key, the image
  1001.                      ; will be magnified 10 times.
  1002.  
  1003.  
  1004.         8.4 Moving the Crosshair
  1005.             --------------------
  1006.  
  1007.     After the graphs have been plotted, a crosshair (graphic cursor) is
  1008.     placed at the upper left hand corner of the screen.  It can be moved
  1009.     with the arrow keys in order to pinpoint coordinates on the screen. 
  1010.     The Home, End, PgUp, and PgDn keys can also be used, for diagonal
  1011.     movement.  To move the crosshair slowly, press the key and release it
  1012.     quickly.  To move it faster, hold the key down as it accelerates.
  1013.     
  1014.     
  1015.         8.5 Adding Text to the Screen
  1016.             -------------------------
  1017.     
  1018.     To add text on the graphic screen, simply start typing wherever the
  1019.     crosshair cursor is located.
  1020.     
  1021.     
  1022.         8.6 Printing a Graphic Screen
  1023.             -------------------------
  1024.     
  1025.     In order to be able to send graphs to the printer, run GRAPHICS.COM
  1026.     (which comes with DOS) before loading UCALC.  Then, when a graph is on
  1027.     the screen, press the 'Print Screen' key to send it out to the printer. 
  1028.     For better results on printers which do not support color, issue the
  1029.     MONO command at the 'ucalc> ' prompt before plotting.  See the DOS
  1030.     manual for more details on GRAPHICS.COM.  This version of UCALC has no
  1031.     built-in mechanism for printing.
  1032.     
  1033.     
  1034.     9.  Summation
  1035.         =========
  1036.     
  1037.     Syntax:  SUM fx, a..b [,dx]
  1038.     
  1039.          b
  1040.         ____
  1041.         \    f(x)    is written as 'SUM f(x), a..b', where f(x) is your
  1042.         /___         function, and a..b is the range.
  1043.         x= a         The summation cannot be part of another expression.
  1044.     
  1045.     The optional  dx  parameter can be used in order to indicate an
  1046.     increment other than the default 1.
  1047.     
  1048.     Examples:
  1049.     ---------
  1050.     
  1051.     ucalc>   sum x^2+2*x+14, 5..1000
  1052.     Answer:  334848394
  1053.     
  1054.     ucalc>   sum x^3-2, 1..15, .1
  1055.     Answer:  127971.6
  1056.     
  1057.     SUMTABLE is the same as SUM, except that intermediate values are
  1058.     displayed as the sum is being added.
  1059.     
  1060.     ucalc>  sumtable x^2/fact(x), 1..3
  1061.        Count         Value         Cumulative
  1062.        1             1             1
  1063.        2             2             3
  1064.        3             1.5           4.5
  1065.     
  1066.     Answer:  4.5
  1067.     
  1068.     A long list can be aborted with the [Esc] key.
  1069.     
  1070.     
  1071.     10. Numerical Integration
  1072.         =====================
  1073.     
  1074.     Syntax:  INTEG fx,a..b [,n]
  1075.     
  1076.     This approximates the value for the definite integral of fx, using
  1077.     Simpson's rule.  This rule requires that  n  be an even number.  UCALC
  1078.     takes care of that by automatically transforming  n  to the next
  1079.     highest even number (n = n + n mod 2).  If no value for n is given,
  1080.     then 100 is used as the default number of subdivisions.  This command
  1081.     works properly only when fx is a continuous function.  INTEG cannot be
  1082.     part of another expression.
  1083.     
  1084.     Examples:
  1085.     ---------
  1086.     
  1087.     ucalc>   integ x*sin(x), 0..pi
  1088.     Answer:  3.14159267059288459
  1089.     
  1090.     ucalc>   integ 1-x^2, 0..1, 8 
  1091.     Answer:  .666666666666666667
  1092.     
  1093.     
  1094.     11. Solving Equations
  1095.         =================
  1096.     
  1097.     Syntax:  SOLVE fx [=gx] [,a..b]
  1098.  
  1099.     This solves an equation for the value of 'x'.  The statements in
  1100.     brackets are optional.  If the expression on the right of the = sign is
  1101.     0, then you can simply do:  'SOLVE expression'.  For instance,
  1102.     'SOLVE 3*x+2=0 can be written as SOLVE 3*x+2.  If the equation happens
  1103.     to have several solutions, you can indicate the interval (a..b) of the
  1104.     particular solution you are interested in.
  1105.  
  1106.     The algorithm used in this program for solving equations is the
  1107.     Bisection Method, which is a special case of the Intermediate Value
  1108.     Theorem.  A solution can be found for continuous functions in the
  1109.     interval a < x < b, where f(a) < 0 < f(b).  If a..b is not defined,
  1110.     then the default interval is from -1E6 to 1E6.  If a real solution does
  1111.     exist, but cannot be found with the default interval, then try
  1112.     narrowing the interval as much as possible.
  1113.  
  1114.     Examples:
  1115.     ---------
  1116.  
  1117.     ucalc>   solve exp(x+x^2)-sqr(x+5) = 127
  1118.     Answer: -2.75962472778054749
  1119.     Answer:  1.76151609179570087
  1120.  
  1121.     ucalc>   solve sin(x)=cos(x), 0..pi
  1122.     Answer:  .78539816339744831
  1123.  
  1124.     ucalc>   solve x^3+2*x+5 = 10+7
  1125.     Answer:  2
  1126.  
  1127.     ucalc>   solve 2*x^2-3
  1128.     Answer: -1.22474487139158905
  1129.     Answer:  1.22474487139158905
  1130.     
  1131.     
  1132.     12. Numerical Notations
  1133.         ===================
  1134.     
  1135.     The default numerical type is DECIMAL.  Binary, octal, and hexadecimal
  1136.     number types are also supported.  The latter types must be preceded by
  1137.     the  #  (number sign) symbol, and one of the letters "h", "b", or "o",
  1138.     for hexadecimal, binary, or octal in that respective order.  The $ sign
  1139.     for hexadecimal notation can be used as a shortcut.  See examples.
  1140.     
  1141.     In order to see all your answers in hex, binary, and octal, issue the
  1142.     command:  mode HBO
  1143.     
  1144.     Exponential notation is also supported.  These are numbers followed by
  1145.     the letter E, and an exponent number.  For instance:  3.4E+5 translates
  1146.     to 3.4*10^5, and 3.4E-5 translates to 3.4*10^(-5).
  1147.     
  1148.     Examples:
  1149.     ---------
  1150.     
  1151.     #b110101110,   #o656,   #h1AE,   $1AE,   430,   4.3E2
  1152.     are all the same number.
  1153.     
  1154.     #b10101^2 * 5/$1EF + sin(5.8+2)*cos(#o302)-7E6  is a valid expression.
  1155.     
  1156.     
  1157.     13. Implicit Multiplications
  1158.         ========================
  1159.     
  1160.     When writing math expressions, it is common to omit the times symbol
  1161.     (*), when multiplication is implied.  For instance, one may write
  1162.     '2x+5', which is the same as '2*x+5'.  The following are examples of
  1163.     implied multiplications supported by UCALC.
  1164.     
  1165.     Expression                    Equivalent
  1166.     ----------                    ----------
  1167.     x y                           x*y
  1168.     3pi+10                        3*pi+10
  1169.     5(4+8)                        5*(4+8)
  1170.     (5+5)(3+9)                    (5+5)*(3+9)
  1171.     (3+2)8                        (3+2)*8
  1172.     
  1173.     NOTE:  Implicit multiplication has the same priority as regular
  1174.            multiplication.  For instance '1/2q' is the equivalent of
  1175.            '1/2*q' not '1/(2q)'.  (This is subject to change in a future
  1176.            version).
  1177.     
  1178.     
  1179.     14. Assigning Variables
  1180.         ===================
  1181.     
  1182.     Variables can be used to store values, which can later become part of
  1183.     an expression.  Variables are composed of letters of the alphabet, and
  1184.     may contain numerical digits, as long as a numerical digit is not the
  1185.     first character.  A variable can be up to 1024 characters long.
  1186.     
  1187.     Examples:
  1188.     ---------
  1189.     
  1190.     mynumber = 12345
  1191.     mass = 15
  1192.     speed = 23+10.5
  1193.     m1 = 10*pi^2
  1194.     cb26 = sqrt(37) + mynumber
  1195.     
  1196.     
  1197.     15. Assigning Functions
  1198.         ===================
  1199.     
  1200.     Once defined, a user function behaves in the same way as a built-in
  1201.     function.  Argument names used in defining functions are temporary, and
  1202.     do not affect user variables with the same name.  The name of the
  1203.     function itself, however, should be unique.  The naming convention of
  1204.     functions is similar to that of variables.  User functions can accept
  1205.     many arguments.
  1206.     
  1207.     Examples:
  1208.     ---------
  1209.     
  1210.     cube(x) = x^3
  1211.     area(r,h) = pi*r*sqr(r^2+h^2)  ; area of right circular cone
  1212.     logx(base,num) = ln(num) / ln(base)
  1213.     abc(x,y,z) = 5 + logx(x,y)*z
  1214.     
  1215.     
  1216.     16. Miscellaneous Commands
  1217.         ======================
  1218.     
  1219.         16.1 LOAD command
  1220.              ------------
  1221.     
  1222.     Syntax:  LOAD"filename"
  1223.     
  1224.     This command loads up the contents of a file into the UCALC workspace.
  1225.     The file may contain any UCALC command.  A file saved with the WRITE
  1226.     command however, cannot be loaded directly if it contains 'ucalc> '
  1227.     prompts.
  1228.     
  1229.     Examples:
  1230.     ---------
  1231.     
  1232.     ucalc> load"convert.def"
  1233.     ucalc> load"finance.def"
  1234.     ucalc> load"formula.asc"
  1235.     
  1236.     
  1237.         16.2 WRITE command
  1238.              -------------
  1239.     
  1240.     Syntax:  WRITE"filename"
  1241.     
  1242.     This command records your UCALC session to the file name that you
  1243.     specify.  Everything that is displayed on the screen will go to that
  1244.     file verbatim, until you issue the CLOSE command, or exit.  If the file
  1245.     already exists, the WRITE command will append to it without removing
  1246.     what is already in the file.
  1247.     
  1248.     Example:
  1249.     --------
  1250.     
  1251.     ucalc> write"ucalc.log"
  1252.     
  1253.     
  1254.         16.3 SHELL command
  1255.              -------------
  1256.     
  1257.     Syntax:  SHELL
  1258.     
  1259.     This allows you to drop to DOS temporarily.  To resume your session,
  1260.     type EXIT at the DOS prompt.  [F4] does the same thing as the SHELL
  1261.     command.  You may also pass a command for DOS to execute.
  1262.     
  1263.     Examples:
  1264.     ---------
  1265.     
  1266.     ucalc> shell"dir"     ; This executes the DIR command.
  1267.     ucalc> shell          ; This drops you to DOS until you type EXIT.
  1268.     
  1269.     NOTE:  The SHELL command cannot be used in TSR mode.
  1270.     
  1271.     
  1272.         16.4 COLOR (text color)
  1273.              ------------------
  1274.     
  1275.     Syntax:  COLOR [foreground] [,background]
  1276.     
  1277.     The foreground and background colors of the text screen can be set at
  1278.     the 'ucalc> ' prompt (or in UCALC.DEF) with this command.  On color
  1279.     monitors, the foreground color can be a number between 0 and 31. 
  1280.     Background colors can be between 0 and 7.  UCALC also clears the screen
  1281.     when this command is entered.  See a DOS or programmers manual for
  1282.     color values.
  1283.     
  1284.     Examples:
  1285.     ---------
  1286.     
  1287.     ucalc> COLOR 7,1           ; sets the screen to white over blue
  1288.     ucalc> COLOR 11,0          ; light cyan over black
  1289.     ucalc> COLOR 5             ; changes only the foreground
  1290.     ucalc> COLOR ,3            ; changes only the background
  1291.     
  1292.     
  1293.         16.5 REDIRECT
  1294.              --------
  1295.     
  1296.     Syntax:  REDIRECT {ON|OFF}
  1297.     
  1298.     Turning redirection off allows text to be displayed on the screen
  1299.     faster.  Also, the color statement may work better when redirection is
  1300.     off, depending on your screen configuration.  By default, UCALC
  1301.     redirection is ON if UCALC is executed from DOS, and OFF when UCALC is
  1302.     loaded as a TSR.
  1303.     
  1304.     
  1305.     17. UCALC.DEF
  1306.         =========
  1307.     
  1308.     Commonly used constants & functions, such as e, and logx(x,y) and any
  1309.     others that are used regularly, and start-up settings, such as COLOR,
  1310.     and PROMPT, etc... can be defined in UCALC.DEF.  This file can be
  1311.     created or modified with any ASCII text editor.  The semicolon (;) can
  1312.     be used as a remark.  Anything following it will not be interpreted as
  1313.     part of the expression.
  1314.     
  1315.     Every time UCALC is run, it looks for UCALC.DEF in the current
  1316.     directory first.  If it's not found there, it searches the directory
  1317.     which UCALC.EXE was loaded from.  If the file is found, its functions
  1318.     and variables are loaded.  The /NODEF option at the command line is
  1319.     equivalent to not having a UCALC.DEF file.
  1320.     
  1321.     Here is an example of what UCALC.DEF may look like:
  1322.     
  1323.     color 11,1
  1324.     grid 3,#b10101
  1325.     mode HBO
  1326.     window(-10,10,-7,7)
  1327.     load"convert.def"
  1328.     prompt""             ; Removes the default 'ucalc> ' prompt
  1329.     prompta"A:"          ; Replaces the default 'Answer: ' prompt with 'A:'
  1330.     
  1331.     e       = 2.718281828459045  ;  Natural log constant
  1332.     gravity = 9.8                ;  Acceleration due to gravity
  1333.     na      = 6.0221367E+23      ;  Avogadro's number 1/mol
  1334.     
  1335.     logx(base,num) = log(num) / log(base)
  1336.     
  1337.     A total maximum of 300 variables, and 200 user functions can be defined
  1338.     (and usually much less in TSR mode).
  1339.     
  1340.     
  1341.     18. Technical Notes
  1342.         ===============
  1343.     
  1344.     o UCALC is not case sensitive.  Upper case letters are treated just the
  1345.       same as lower case letters.  For instance, pi, PI, and Pi are all
  1346.       treated the same.
  1347.     
  1348.     o Rounding:  The rounding method in UCALC is called banker's rounding. 
  1349.       With this method, numbers ending with the digit 5 are rounded towards
  1350.       the closest even digit.  For instance, both 11.5 and 12.5 are rounded
  1351.       to 12, and both 13.5 and 14.5 are rounded to 14, when FIX is set to
  1352.       0.  Only the displayed number is rounded, while the actual
  1353.       calculations are performed in high precision.
  1354.     
  1355.     o Random Numbers:  The RND function produces a random number between 0
  1356.       and 1.  RND(1) returns a new random number each time it is used. 
  1357.       RND(0) returns the previously used random number.  If x is negative,
  1358.       then RND(x) returns a predictable number.  For instance, RND(-5) will
  1359.       produce the same number each time.  To get a random number between 0
  1360.       & x, simply use RND(1)*x.  For instance, RND(1)*50 will return a
  1361.       random number between 0 & 50.
  1362.     
  1363.     o Ugly Numbers:  Occasionally, numbers are not displayed as one might
  1364.       expect.  For instance you might get .499999999999999999 instead of
  1365.       .5, or 8.23423423982432343E-18 instead of 0, which is actually pretty
  1366.       close to the answer.  This may happen as a result of lengthy
  1367.       operations, or certain types of functions.  One solution is to reduce
  1368.       the number of decimal digits that are displayed with the FIX command.
  1369.     
  1370.     o HBO mode:  When this mode is on, it will display the hex, binary, and
  1371.       octal notations, only for values between -32766 and 65535.  Numbers
  1372.       beyond that range are displayed only in decimal form.  Negative
  1373.       numbers are represented in "two's complement" form.  Only the integer
  1374.       part of a number is displayed in hex, bin, and oct.  Entering 'MODE
  1375.       HBO' turns the HBO mode on.  Typing it again turns it back off.
  1376.     
  1377.     o Relational operators return a 1 for true expressions, and 0 for false
  1378.       ones.  For instance,  '5 > 3' returns 1, and '5 < 3' returns 0.
  1379.     
  1380.     o Compound Functions:  Functions with multiple entries may be defined
  1381.       by using relational operators.  For instance:
  1382.     
  1383.                 / 2+x^2,   x > 0
  1384.         f(x) = |  3,       x = 0
  1385.                 \ x*2+8,   x < 0
  1386.     
  1387.        can be written as:
  1388.     
  1389.         f(x) = (2+x^2)*(x > 0)  +  (3)*(x = 0)  +  (x*2+8)*(x < 0)
  1390.     
  1391.     o Equal Sign:  The single equal sign, =, can be used both for assigning
  1392.       functions & variables, and as a relational operator.  If there is a
  1393.       conflict in the logic of an expression such that it can be taken
  1394.       either way, then use the double equal sign, ==, when a relational
  1395.       operator is intended.  An assignment is assumed only when the
  1396.       expression left of the left-most equal sign is a valid function or
  1397.       variable name.  To avoid all confusion, use == for relational
  1398.       operations.
  1399.     
  1400.     o Limited Function Space:  There is a limit of instructions (such as +,
  1401.       -, *, etc...) which can be used for defining functions.  Every time a
  1402.       function is defined or redefined, part of the instruction list is
  1403.       filled, and cannot be reclaimed during a UCALC session.  An error
  1404.       message is given when too many functions have been defined.
  1405.     
  1406.     o Each expression can use a maximum of 33 instructions.  If an
  1407.       expression is too long, UCALC returns an error message.  Expressions
  1408.       can be broken down into several shorter ones.
  1409.     
  1410.     o The graphic screen is optimized for the VGA mode.  With lower
  1411.       resolution, the crosshair will give a less accurate reading of its
  1412.       location on the screen.  WINDOW(-10,10,-7,7) is a better match for
  1413.       the proportions of the EGA screen mode.
  1414.     
  1415.     o UCALC can be de-activated from memory with the command "EXIT TSR". 
  1416.       However, in order for UCALC to be able to remove itself successfully
  1417.       from memory, UCALC should be the last TSR to be loaded, and the
  1418.       unloading should take place when UCALC is popped up at the DOS
  1419.       prompt.
  1420.     
  1421.     o End-of-file:  When doing redirection from the DOS command line, make
  1422.       sure that the input file ends with an end-of-file marker (^Z, or
  1423.       ASCII 26).  Many text editors take care of this automatically, but a
  1424.       few don't.  An input file may alternatively end with a ^C (ASCII 3)
  1425.       or the EXIT command.  Be sure to add several blank lines at the end
  1426.       of the input file.  An input file with no ^C, ^Z or EXIT, and no
  1427.       blank lines at the end may cause UCALC to freeze.
  1428.     
  1429.     o Redirection mode is forced off when UCALC is loaded as a memory
  1430.       resident program.  If the REDIRECT ON command is manually issued when
  1431.       in TSR mode, UCALC may crash when popping down.  This will hopefully
  1432.       be changed in a future version.
  1433.     
  1434.     
  1435.     19. Registration
  1436.         ============
  1437.     
  1438.     UCALC is not "free", neither is it "public domain".  It is a
  1439.     copyrighted program distributed through the shareware channel.  This
  1440.     allows users to try the program first to see if it suits their needs. 
  1441.     If you decide to continue using it, then please remember to pay the
  1442.     author the requested registration fee.  UCALC costs only $25 for
  1443.     individual use, or less per machine for a site license.  There are
  1444.     discounts for online users.
  1445.     
  1446.     Registered users receive a special code that permanently deactivates
  1447.     all registration reminders.  Notice that there is no extra shipping
  1448.     charge in this version because of this, even for international users.
  1449.     
  1450.     In order to help me better support this program, please answer the
  1451.     questions in QUEST.DOC, whether you decide to register or not.  This
  1452.     will allow me to keep the price down, and add the right features in the
  1453.     next version.  Use the form in REGISTER.DOC to place your registration.
  1454.     
  1455.     Easy Service
  1456.     ------------
  1457.     For your convenience, you can order UCALC from the Public Software
  1458.     Library with your Visa, Master Card, American Express, or Discover card
  1459.     by calling toll-free at 1-800-242-4PSL (overseas: 713-524-6394) or by
  1460.     FAX to 713-524-6398, and even by Compuserve at 71355,470.  PSL NUMBERS
  1461.     ARE FOR ORDERING ONLY.  I cannot be reached at those numbers.
  1462.     
  1463.     Compuserve users can register by typing GO SWREG, and choosing item
  1464.     #3591.  For fastest service, please forward a message to my Internet
  1465.     account (corbier@satelnet.org, or corbier@delphi.com), as you register.
  1466.     
  1467.     Support
  1468.     -------
  1469.     I will try to extend my support to unregistered users during their
  1470.     evaluation period, however, I reserve the right to limit my support for
  1471.     unregistered users if their requests become taxing for me.  I much
  1472.     prefer to communicate by e-mail, rather than postal mail, whenever
  1473.     possible.
  1474.     
  1475.     License
  1476.     -------
  1477.     For this license agreement, a site is considered to be any corporation,
  1478.     institution, government agency, computer lab, or non-personal
  1479.     organization, with more than one computer capable of running the UCALC
  1480.     software.
  1481.     
  1482.     A site may use the unregistered version for evaluation purposes only. 
  1483.     If the site decides to continue using UCALC after 30 days, a site
  1484.     license must be purchased.  The site license arrangement provides for
  1485.     volume discounts.  See the file named REGISTER.DOC for the low rates
  1486.     that are available.
  1487.     
  1488.     A site license is for use of the software within your site, and is not
  1489.     transferable.  This license allows the internal use and copying of the
  1490.     software by as many computers as contracted for.  Distribution,
  1491.     repackaging, or reselling of the licensed version to third parties is
  1492.     not allowed under this agreement.  The unregistered version however may
  1493.     be freely distributed.
  1494.     
  1495.     The LICENSOR (Daniel Corbier) warrants that he is the sole owner of the
  1496.     UCALC software and has full power and authority to grant this license
  1497.     herein without consent of any other party.
  1498.     
  1499.     Disclaimer
  1500.     ----------
  1501.     The Ultimate Calculator (UCALC) is provided on an "as is" basis without
  1502.     warranty of any kind, expressed or implied.  The person using the
  1503.     software bears all risk as to the quality and performance of the
  1504.     software.  The author will not be held liable for any special,
  1505.     incidental, consequential, direct or indirect damages due to any
  1506.     malfunctions.
  1507.     
  1508.     Aside from the legal stuff, I'm eager to support this program as much
  1509.     as possible.  I want to hear your suggestions for the next release.
  1510.     
  1511.     
  1512.     20. Shareware Author & User Case Study
  1513.         ==================================
  1514.     
  1515.     When developing UCALC, I had hoped to get many registrations, or at
  1516.     least enough to support the cost of development.  After releasing the
  1517.     first version, I started getting an occasional registration from time
  1518.     to time, each one being very helpful, but overall not enough to cover
  1519.     the cost of development.  I changed the registration incentive tactics
  1520.     in the following version.  Things did not pick up, but instead
  1521.     registrations became much more sparse (until the next version which did
  1522.     better).
  1523.     
  1524.     This lead me to do some research to find the right ingredients for
  1525.     getting people to register.  I conducted a survey asking many shareware
  1526.     users what motivates them to register.  I also asked a number of well-
  1527.     known successful shareware authors what they have done to receive many
  1528.     registrations.  The results are written in a document which can be
  1529.     found on many BBSes.  Here's the description:
  1530.     
  1531.     Filename:  SAUCS1.ARJ (or .ZIP, .LZH, .SDN, ..)
  1532.  
  1533.     Description:   SHAREWARE AUTHOR & USER CASE STUDY v1 - Answers
  1534.                    questions that shareware authors often ask, such as what
  1535.                    motivates users to register, what prevents them from
  1536.                    doing so, how much they are willing to pay, how to get
  1537.                    one's program "out there", whether or not crippling and
  1538.                    nagging works, how long users take to evaluate programs
  1539.                    before paying, etc ...  Answers are based on survey
  1540.                    responses from shareware users and successful authors.
  1541.     
  1542.     Size:  42k (when compressed with ARJ)
  1543.     
  1544.     
  1545.     21. My Address
  1546.         ==========
  1547.     
  1548.     For information about dealer pricing, volume discounts, site licensing,
  1549.     latest version, suggestions, or for technical information, you can
  1550.     contact me through one of the following means (notice the new address):
  1551.     
  1552.     US Mail:
  1553.         Daniel Corbier
  1554.         20410 SW 92 Place
  1555.         Miami, FL  33189
  1556.  
  1557.     FAX: 305-233-2604
  1558.  
  1559.     Voice Mail: 305-233-2604
  1560.     
  1561.     Internet:
  1562.         corbier@delphi.com
  1563.         corbier@satelnet.org
  1564.     
  1565.     Fidonet:
  1566.         Daniel Corbier at 1:135/110 or Daniel Corbier at 1:135/23
  1567.     
  1568.     Compuserve: 75541,1523
  1569.     
  1570.     The following two addresses can also be used from Compuserve:
  1571.     INTERNET:  corbier@delphi.com
  1572.     INTERNET:  corbier@satelnet.org
  1573.     
  1574.     In the Miami area, I usually frequent the following BBSes daily:
  1575.     
  1576.     Telcom Central   305-828-7909
  1577.     MACC             305-596-1854
  1578.     SOX              305-821-3317
  1579.     
  1580.     I usually read the following conferences:
  1581.     
  1582.     Fidonet:  Shareware, ECPROG, Science and more
  1583.     Internet:  various comp.sys, and sci.math newsgroups, and more
  1584.     Compuserve:  ASP shareware, UK shareware, science, and more
  1585.     
  1586.     I try my best to answer all e-mail enquiries.  Sometimes e-mail can get
  1587.     lost.  If several days pass without a response, please try sending e-
  1588.     mail to another listed address.  Your messages are important.
  1589.     
  1590.     
  1591.     22. Distribution
  1592.         ============
  1593.     
  1594.     You are encouraged to distribute the shareware version of UCALC.  The
  1595.     following files must all be present and unmodified when distributed:
  1596.     
  1597.     UCALC.DEF     Sample UCALC.DEF file
  1598.     UCALC.TSR     Options for TSR mode
  1599.     UCALC.EXE     Executable
  1600.     UCALC.DOC     Documentation
  1601.     QUEST.DOC     Questionnaire
  1602.     HISTORY.DOC   Lists the features that were added in each version
  1603.     EXAMPLES.DOC  Examples for UCALC
  1604.     REGISTER.DOC  Registration form
  1605.     PLOTDEMO      Graphic demo.  Type UCALC < PLOTDEMO from DOS to see it
  1606.     GRAPH1.DAT    Sample data file for the graphic demo
  1607.     GRAPH2.DAT    Another sample data file
  1608.     CONVERT.DEF   Conversion functions
  1609.     FILE_ID.DIZ   Brief program description
  1610.     
  1611.     The compressed file name prefix must be UCALC28 or UCAL28 (followed by
  1612.     ARJ, ZIP, LZH, or other).
  1613.     
  1614.     Vendors
  1615.     -------
  1616.     Vendors may distribute UCALC, as long as it is not labeled "free",
  1617.     "cheap", "copyright free", or "public domain".  It must be made clear
  1618.     to customers that this program is shareware, and that a payment must be
  1619.     made to the author if they continue using it.  All ASP distributors in
  1620.     good standing may distribute the Ultimate Calculator without my written
  1621.     permission (although I would appreciate a copy of your catalog).
  1622.     
  1623.     Vendors who operate with good business ethics should feel free to
  1624.     distribute UCALC without my written permission.
  1625.     
  1626.     23. Acknowledgments
  1627.         ===============
  1628.     
  1629.     I would like to thank those who have registered UCALC, and everyone who
  1630.     has sent suggestions.  I would like to thank Dr. Steven Gunhouse for
  1631.     suggestions on graphic features such as zoom, trace, etc....  I would
  1632.     also like to thank the following people for being beta testers:
  1633.     
  1634.     Aaron Beharrell
  1635.     Jonathan Borwein   University of Waterloo
  1636.     David G. Caraballo Princeton University
  1637.     Elan Feingold      Cornell University
  1638.     Daryl Gungadoo     Andrews University
  1639.     Steven Gunhouse    University of Texas
  1640.     James Hague
  1641.     Rich Holland       Kansas State University
  1642.     Fred Hapgood
  1643.     John Lim Eng Hooi
  1644.     Willie Hutton      University of Colorado
  1645.     Mark W Jacobs      Stanford University
  1646.     Michael D. Lawler  Ball State University
  1647.     Chris Long         Rutgers University
  1648.     Mark E. Mallett
  1649.     Peter Paul Meiler  TNO Physics & Electronics Lab, the Netherlands
  1650.     Marty Milette      Mitel Corporation
  1651.     Matt Pardo         North Carolina Medical Center
  1652.     Alexander Pruss    University of British Columbia
  1653.     Glauber Ribeiro    O.C. International, Brazil
  1654.     Dave Sklar         Temple University
  1655.     John Steele        Video Business Systems
  1656.     David Steinman     University of Toronto
  1657.     Sue Widemark
  1658.     Shi-Chang Wooh     Northwestern University, Illinois
  1659.     
  1660.                     <<<<  END OF UCALC DOCUMENTATION  >>>>
  1661.